package Capa_Presentacion;

import Capa_Datos.CD_Detalleus;

import Capa_Datos.CD_Software;

import org.primefaces.event.DragDropEvent;

import Capa_Datos.CD_Unidad;

import Capa_Negocio.CN_DeatlleUnidSoft;
import Capa_Negocio.CN_ImplSoftServicio;
import Capa_Negocio.CN_ImplUnidad;
import Capa_Negocio.CN_ImpleDetalleUnidSoft;

import Capa_Negocio.CN_SoftServicio;
import Capa_Negocio.CN_Unidad;

import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.context.FacesContext;




public class CP_MantSofUnid implements Serializable  {

	//private ArrayList<CD_Unidad> listaUnidad;
	//private ArrayList<CD_Software> listaSoftware;
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private ArrayList<String> listaUnidadS;
	private ArrayList<String> listaSoftwareS;
	private ArrayList<CD_Detalleus> listaDeatellus;
	private ArrayList<CD_Detalleus> listaDetalleUnidad;


	
	private CD_Software software;
	private String unidadS;
	private String softwareS;
	private CN_DeatlleUnidSoft detalleUS;
	private CD_Detalleus selectedCar;

	public CP_MantSofUnid(){
		selectedCar= new CD_Detalleus();
		listaDetalleUnidad= new ArrayList<CD_Detalleus>();
		detalleUS=  new CN_ImpleDetalleUnidSoft();
		listaDeatellus= new ArrayList<CD_Detalleus>();
		//listaUnidad = new ArrayList<CD_Unidad>();
		listaSoftwareS =new ArrayList<String>();
		listaUnidadS= new ArrayList<String>();
		cargarTipoUnidad();	
		//listaSoftware =new ArrayList<CD_Software>();
		cargarSoftwareGeneral();
		cargarDetalleUnidSoft();
		

	}
	
	
	public void cargarDetalleUnidSoft(){
		listaDeatellus.clear();
		System.out.print("entre  aconsultar");
		List<CD_Detalleus> lista= detalleUS.obtenerListaUnidadSoft();
		System.out.print("obtuve lista");
		
		for(CD_Detalleus detallesofuni : lista){
			this.listaDeatellus.add(detallesofuni);
			System.out.println("nombre: "+ detallesofuni.getIdDetalleUS());
			System.out.println("nombre: "+ detallesofuni.getSoftware().getNombre());
		}
		
	}
	
	public void cargarDetalleUnidad(){
		listaDetalleUnidad.clear();
		for(CD_Detalleus detalleUni : listaDeatellus){
			if(detalleUni.getUnidad().getNombre().equalsIgnoreCase(unidadS)){
				listaDetalleUnidad.add(detalleUni);
			}
		}
	}
	
	public void cargarTipoUnidad(){
		CN_Unidad cn_unidad = new CN_ImplUnidad();
		List<CD_Unidad> lista = cn_unidad.obtenerListaUnidad();
		
		for(CD_Unidad unidad : lista){
			this.listaUnidadS.add(unidad.getNombre());
			System.out.println("nombre: "+ unidad.getNombre());
			System.out.println("unidad: "+ unidad.getIdUnidad());
		}
	}
	public void cargarSoftwareGeneral(){
		CN_SoftServicio cn_software =new CN_ImplSoftServicio();
		List<CD_Software> lista =cn_software.getListaSw();
		for(CD_Software software : lista){
			software.setNombre(software.getNombre());
			this.listaSoftwareS.add(software.getNombre()+" "+software.getVersion());
			System.out.println("nombre software: "+ software.getNombre());
			System.out.println("version: "+ software.getVersion());
		}
	}

	public void MetodoRegistrar(){
				
		 if(detalleUS.RegistarDetalleSU(softwareS, unidadS)==1){
			System.out.print("Se le realizo el registro");
			cargarDetalleUnidSoft();
		 }
	   
	 }
	public void Eliminar(){
		if(detalleUS.EliminarDetalleus(selectedCar)==1){
			listaDetalleUnidad.remove(selectedCar);
			listaDeatellus.remove(selectedCar);
			System.out.print("elimine");
			cargarDetalleUnidad();
			
		}
	}

	public CD_Unidad getUnidad() {
		return unidad;
	}

	

	public CD_Software getSoftware() {
		return software;
	}
	

	public void setSoftware(CD_Software software) {
		this.software = software;
	}

	public void setUnidad(CD_Unidad unidad) {
		this.unidad = unidad;
	}

	
	public ArrayList<String> getListaUnidadS() {
		return listaUnidadS;
	}

	public void setListaUnidadS(ArrayList<String> listaUnidadS) {
		this.listaUnidadS = listaUnidadS;
	}

	public ArrayList<String> getListaSoftwareS() {
		return listaSoftwareS;
	}

	public void setListaSoftwareS(ArrayList<String> listaSoftwareS) {
		this.listaSoftwareS = listaSoftwareS;
	}

	public String getUnidadS() {
		return unidadS;
	}

	public void setUnidadS(String unidadS) {
		this.unidadS = unidadS;
	}

	public String getSoftwareS() {
		return softwareS;
	}

	public void setSoftwareS(String softwareS) {
		this.softwareS = softwareS;
	}
	public CN_DeatlleUnidSoft getDetalleUS() {
		return detalleUS;
	}
	public void setDetalleUS(CN_DeatlleUnidSoft detalleUS) {
		this.detalleUS = detalleUS;
	}
	public ArrayList<CD_Detalleus> getListaDeatellus() {
		return listaDeatellus;
	}
	public void setListaDeatellus(ArrayList<CD_Detalleus> listaDeatellus) {
		this.listaDeatellus = listaDeatellus;
	}
	private CD_Unidad unidad;
	public ArrayList<CD_Detalleus> getListaDetalleUnidad() {
		return listaDetalleUnidad;
	}
	public void setListaDetalleUnidad(ArrayList<CD_Detalleus> listaDetalleUnidad) {
		this.listaDetalleUnidad = listaDetalleUnidad;
	}
	

	public CD_Detalleus getSelectedCar() {
		return selectedCar;
	}

	public void setSelectedCar(CD_Detalleus selectedCar) {
		this.selectedCar = selectedCar;
	}

	public void registrarVista(){
		 FacesContext contex = FacesContext.getCurrentInstance(); 		 
		try {
			
			contex.getExternalContext().redirect( "/ProyLabo/faces/view/Registro_SoftUnid.xhtml" );
		} catch (IOException e) {
			
			e.printStackTrace();
		}
	}
	public void consultarVista(){
		 FacesContext contex = FacesContext.getCurrentInstance(); 		 
		try {
			
			contex.getExternalContext().redirect( "/ProyLabo/faces/view/ConsultarUnidSoft.xhtml" );
		} catch (IOException e) {
			
			e.printStackTrace();
		}
	}
	public void eliminarVista(){
		 FacesContext contex = FacesContext.getCurrentInstance(); 		 
		try {
			
			contex.getExternalContext().redirect( "/ProyLabo/faces/view/EliminarUnidSoft.xhtml" );
		} catch (IOException e) {
			
			e.printStackTrace();
		}
	}
}
